from django.core.management.base import BaseCommand
from catalog.models import Author, Genre, Language, Book, BookInstance
from django.contrib.auth.models import User
from datetime import date, timedelta

class Command(BaseCommand):
    help = '初始化图书馆测试数据'

    def handle(self, *args, **kwargs):
        # 清理现有数据
        self.stdout.write('清理现有数据...')
        Author.objects.all().delete()
        Genre.objects.all().delete()
        Language.objects.all().delete()
        Book.objects.all().delete()
        BookInstance.objects.all().delete()

        # 创建语言
        self.stdout.write('创建语言...')
        chinese = Language.objects.create(name='中文')
        english = Language.objects.create(name='英文')
        japanese = Language.objects.create(name='日文')

        # 创建类型
        self.stdout.write('创建图书类型...')
        genres = {
            '科幻': Genre.objects.create(name='科幻'),
            '奇幻': Genre.objects.create(name='奇幻'),
            '文学': Genre.objects.create(name='文学'),
            '历史': Genre.objects.create(name='历史'),
            '技术': Genre.objects.create(name='技术'),
            '哲学': Genre.objects.create(name='哲学'),
            '心理学': Genre.objects.create(name='心理学'),
        }

        # 创建作者
        self.stdout.write('创建作者...')
        authors = [
            Author.objects.create(
                name='刘慈欣',
                date_of_birth=date(1963, 6, 23),
                bio='中国科幻作家，代表作《三体》系列'
            ),
            Author.objects.create(
                name='村上春树',
                date_of_birth=date(1949, 1, 12),
                bio='日本作家，代表作《挪威的森林》'
            ),
            Author.objects.create(
                name='乔治·马丁',
                date_of_birth=date(1948, 9, 20),
                bio='美国奇幻作家，代表作《冰与火之歌》系列'
            ),
            Author.objects.create(
                name='余华',
                date_of_birth=date(1960, 4, 3),
                bio='中国作家，代表作《活着》'
            ),
            Author.objects.create(
                name='东野圭吾',
                date_of_birth=date(1958, 2, 4),
                bio='日本推理作家，代表作《白夜行》'
            ),
        ]

        # 创建图书
        self.stdout.write('创建图书...')
        books = [
            {
                'title': '三体',
                'author': authors[0],
                'summary': '文化大革命如火如荼进行的同时，军方探寻外星文明的绝秘计划"红岸工程"取得了突破性进展。但在按下发射键的那一刻，历经劫难的叶文洁没有意识到，她彻底改变了人类的命运。',
                'isbn': '9787536692930',
                'language': chinese,
                'genres': [genres['科幻']],
            },
            {
                'title': '挪威的森林',
                'author': authors[1],
                'summary': '这是一部动人心弦的故事，主人公渡边以第一人称展开他同两个女孩间的爱情纠葛。',
                'isbn': '9787532725694',
                'language': japanese,
                'genres': [genres['文学']],
            },
            {
                'title': '权力的游戏',
                'author': authors[2],
                'summary': '在一个神秘的世界里，七大王国的统治者维斯特洛开始了一场权力的游戏。',
                'isbn': '9787536671676',
                'language': english,
                'genres': [genres['奇幻'], genres['历史']],
            },
            {
                'title': '活着',
                'author': authors[3],
                'summary': '讲述了农村人福贵悲惨的人生遭遇。福贵少年时代因为嗜赌成性，终于赌光了家业。',
                'isbn': '9787506365437',
                'language': chinese,
                'genres': [genres['文学']],
            },
            {
                'title': '白夜行',
                'author': authors[4],
                'summary': '东野圭吾最受欢迎的长篇杰作，一部重达东野圭吾一生的小说。',
                'isbn': '9787544258609',
                'language': japanese,
                'genres': [genres['文学']],
            },
        ]

        for book_data in books:
            book = Book.objects.create(
                title=book_data['title'],
                author=book_data['author'],
                summary=book_data['summary'],
                isbn=book_data['isbn'],
                language=book_data['language']
            )
            book.genre.set(book_data['genres'])

            # 为每本书创建3个副本
            for i in range(3):
                BookInstance.objects.create(
                    book=book,
                    imprint=f'2024年第{i+1}版',
                    status='a'
                )

        self.stdout.write(self.style.SUCCESS('成功初始化测试数据！')) 